package com.zl.task.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static com.zl.task.commom.ServiceCode.PHONE_LENGTH;

/**
 * @author YinlinGeng
 */
public class CheckMessage {

    /**
     * todo 校验密码
     * 包含大小写字母及数字且在6-12位
     * 是否包含
     *
     * @param str
     * @return
     */
    public static boolean isLetterDigit(String str) {
        //定义一个boolean值，用来表示是否包含数字
        boolean isDigit= false;
        //定义一个boolean值，用来表示是否包含大写字母
        boolean isUpperCase = false;
        //定义一个boolean值，用来表示是否包含小写字母
        boolean isLowerCase = false;
        for (int i = 0; i < str.length(); i++) {
            //用char包装类中的判断数字的方法判断每一个字符
            if (Character.isDigit(str.charAt(i))) {
                isDigit = true;
                //用char包装类中的判断字母的方法判断每一个字符
            } else if (Character.isUpperCase(str.charAt(i))) {
                isUpperCase = true;
            }
            //用char包装类中的判断字母的方法判断每一个字符
            else if (Character.isLowerCase(str.charAt(i))) {
                isLowerCase = true;
            }
        }
        String regex = "^[a-zA-Z0-9]{6,12}$";

        return isDigit&& isLowerCase&&isUpperCase && str.matches(regex);
    }

    /**
     * todo 校验手机号座机
     * @param phone
     * @return
     */
    public static String checkPhone(String phone) throws Exception{

        if (null == phone || "".equalsIgnoreCase(phone)) {
            throw new Exception("联系方式不能为空");
        } else {
            if (phone.length() != PHONE_LENGTH) {
                throw new Exception("请填写正确的联系方式");
            }
            String regex = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9])|(16[6]))\\d{8}$";
            // String regex1 = "/0\\d{2,3}-\\d{7,8}/";座机
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(phone);
            boolean isMatch = m.matches();
            if (!isMatch) {
                throw new Exception("请填写正确的联系方式");
            }
        }
        return phone;
    }

}
